package com.aaa.forum.services;

import com.aaa.forum.model.User;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface ISubscribeService {
    /**
     * 订阅
     * @param userId            用户id
     * @param subscribedUserId  被订阅的用户id
     */
    void like(Long userId, Long subscribedUserId);

    /**
     * 取消订阅
     * @param userId            用户id
     * @param subscribedUserId  被订阅的用户id
     */
    void cancel(Long userId, Long subscribedUserId);


    /**
     * 获取关注状态
     * @param userId            用户id
     * @param subscribedUserId  被订阅的用户id
     */
    Byte getState(Long userId, Long subscribedUserId);


    /**
     * 获取该用户的关注数量
     * @param userId    用户id
     */
    Long getSubscribeCount(Long userId);

    /**
     * 获取该用户的粉丝数量
     * @param userId    用户id
     */
    Long getFanCount(Long userId);

    /**
     * 获取该用户的粉丝列表
     * @param userId    用户id
     */
    List<User> getFanList(Long userId);

    /**
     * 获取该用户的关注列表
     * @param userId    用户id
     */
    List<User> getSubscribeList(Long userId);
}
